package cn.getech.data.development.entity.dataMap;

import cn.getech.data.development.entity.TableFieldInfo;
import cn.getech.data.development.entity.flink.BdpRealTableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

@Data
public class DataApplication implements Serializable {
    private Long id;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 数据仓库表id
     */
    private Integer tableId;

    /**
     * 表名称
     */
    private String tableName;

    /**
     * 表中文名称
     */
    private String tableAlias;

    /**
     * 申请人
     */
    private String applyUser;
    /**
     * 审批人
     */
    private String approveUser;
    /**
     * 提交日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date submitTime;

    /**
     * 审批处理时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date handleTime;

    /**
     * 回收时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date rollbackTime;
    /**
     * 有效时间 单位天
     */
    private Integer effectiveDay;

    /**
     * 有效截止日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date effectiveDeadline;

    /**
     * 申请状态   1 待审批  2.通过 3 拒绝 4  已回收 5 过期
     */
    private Integer applyStatus;

    /**
     * 申请理由
     */
    private String applyReason;

    /**
     * 拒绝理由,审批理由
     */
    private String rejectionReason;
    /**
     * 回收理由
     */
    private String rollbackReason;
    /**
     * 授权人id
     */
    private Long approveUserId;

    /**
     * 查询权限 1 拥有,0 未拥有
     */
    private Integer query;

    /**
     * 修改权限 1 拥有,0 未拥有
     */
    private Integer update;

    /**
     * 删除权限 1 拥有,0 未拥有
     */
    private Integer delete;

    /**
     * 所有权限 1 拥有,0 未拥有
     */
    private Integer all;

    /**
     * 新字段权限 1 拥有,0 未拥有
     */
    private Integer assign;

    /**
     * 导出权限 1 拥有,0 未拥有
     */
    private Integer export;

    /**
     * 加密权限 1 拥有,0 未拥有
     */
    private Integer decrypt;

    /**
     * 申请表类型 1:离线表 2:实时表
     */
    private Integer applyType;

    /**
     * 离线表字段
     */
    private List<TableFieldInfo> tableFieldInfos;


    /**
     * 实时表字段
     */
    private  List<BdpRealTableField> realTableFields;

    /**
     * 前端选中的字段ids
     */
    private List<Long> fieldIds;

    /**
     * 实时表名称
     */
    private String realTableName;

    /**
     * 离线表名称
     */
    private String offTableName;

    private static final long serialVersionUID = 1L;

    public void defaultValue() {
        this.query = 0;
        this.update = 0;
        this.delete = 0;
        this.all = 0;
        this.assign = 0;
        this.export = 0;
        this.decrypt = 0;
        this.applyStatus = 0;
    }
}